In the past, time-shared computers, also known as mainframe computers, allowed a large number of users to interact concurrently with a single computer through the use of remotely located user terminals. The next wave of computing saw individual computers, also known as personal computers move onto a user's desktop. Over time, personal computers became more powerful than the centralized mainframe computers. However, over the last five to ten years, the computing industry has seen the deconstruction of personal computers into individual components of storage, processors, and user-interfaces, where each of these components are combinable in different ways. More recently, a growing trend has been to shift back to a centralized computing model with a processor and storage located in a data center, and a user interface extended out to the desktop for the user. The benefits of centralization in this model include reduced cost, increased security, reduced operational expense, increased resilience, and increased performance.
Microsoft Corporation's Remote Desktop Protocol (RDP) is a protocol which allows a user's local computer to interact across a network with a server system by transferring graphics display information from the server(s) to the user's local display and also transporting input from the user to the server(s). RDP allows for specialized software processing and communication between components on the user's computer and components running on the server(s). For example, if a server computer processes a 1920×1200 video running at 30 frames per second (fps), which would otherwise result in about 1.7 Gigabits per second (Gbps) of video data being transferred to memory within the server, RDP will compress the data down to about 1 Mbps (megabits per second) to 30 Mbps and thereby reduce the amount of data that needs to be written into system memory within the server. Even with this compression performed in software by RDP, there still are significant performance costs (in, for example, bandwidth, power, and latency), particularly when many users are sharing the resources of the server(s) as is typically the case.